<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Symbol</title>
</head>
<body>
<script>
    //每一个Symbol函数返回值都是对当前symbol值的描述，所以即使参数一样，Symbol也是不同的
    var s1 = Symbol("hi")
    var s2 = Symbol("hi")
    console.warn(s1, s2, s1 == s2, s1 === s2)

    //实战中的应用
    var sys = Symbol("age")
    let a = sys

    //第一种写法（推荐的写法）
    var obj = {
        [a]: 18//不能写成a，因为那样key值就成了字符串；[a]会自动调佣toString方法
    }
    //.运算符只能应对key值是字符串的情况，所以使用.运算符默认读取的那个字符串属性
    console.log(obj.sys, obj[sys])
    //第二种写法
    obj[sys] = 18

    //第三种写法
    Object.defineProperty(obj, sys, {
        value: 23
    })
</script>
</body>
</html>